﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.WebPages;
using MyBlog.Common;
using MyBlog.Unity;

namespace MyBlog
{
    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明，
    // 请访问 http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            UnityConfig.RegisterAllService();
            AutoMapperConfig.Configure();
            WebCache.InitCache();
            LogHelper.WriteLog("应用程序启动。");
            //打开注释 默认 是 移动端 显示效果//
            //DisplayModeProvider.Instance.Modes.RemoveAt(0);
            //DisplayModeProvider.Instance.Modes.Insert(0,
            //new DefaultDisplayMode("Mobile")
            //{
            //    ContextCondition = Context => true
            //});
        }

        void Application_End(object sender, EventArgs e)
        {
            //  在应用程序关闭时运行的代码         
            LogHelper.WriteLog("应用程序关闭。");
        }
        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码         
            Exception lastError = Server.GetLastError();
            if (lastError != null)
            {
                LogHelper.WriteLog("应用程序异常：" + lastError.Message + (lastError.InnerException != null ? ("\r\n" + lastError.InnerException.Message) : ""));
            }
            Server.ClearError();
        }
        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码         
            string ipAddress = UserSession.GetClientIP();
            LogHelper.WriteLog(ipAddress + " Visited!");
        }
        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。          
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为         
            // InProc 时，才会引发 Session_End 事件。如果会话模式设置为 StateServer          
            // 或 SQLServer，则不会引发该事件。         
            //WriteFile("销毁Session。");
        }

    }
}